package com.muyu.payment.service;

import com.muyu.payment.domain.RechargeOrder;
import com.muyu.payment.domain.req.RechargeReq;
import com.muyu.payment.domain.resp.RechargeResp;

/**
 * 充值服务接口
 *
 * @author muyu
 * @date 2025-01-27
 */
public interface RechargeService {

    /**
     * 创建充值订单
     *
     * @param userId 用户ID
     * @param userName 用户账号
     * @param request 充值请求
     * @return 充值订单
     */
    RechargeOrder createRechargeOrder(Long userId, String userName, RechargeReq request);

    /**
     * 处理充值回调
     *
     * @param orderNo 订单号
     * @param thirdPartyTradeNo 第三方交易号
     * @param status 支付状态
     * @return 是否处理成功
     */
    boolean handleRechargeCallback(String orderNo, String thirdPartyTradeNo, Integer status);

    /**
     * 根据订单号查询充值订单
     *
     * @param orderNo 订单号
     * @return 充值订单
     */
    RechargeOrder getRechargeOrderByOrderNo(String orderNo);

    /**
     * 取消充值订单
     *
     * @param orderNo 订单号
     * @return 是否成功
     */
    boolean cancelRechargeOrder(String orderNo);

    /**
     * 创建充值订单并调用第三方支付接口
     *
     * @param userId 用户ID
     * @param userName 用户账号
     * @param request 充值请求
     * @return 充值响应（包含支付链接）
     */
    RechargeResp createRechargeOrderWithPayment(Long userId, String userName, RechargeReq request);
}